/*! 
 *  Interface for a generic Audio Wrapper class, actual implementations should public this
 *  -
 *  Implementation of an audio wrapper, Sound Programming course
 *  Master in Computer Game Development, Verona, Italy
 *  -
 *  \author Andrea Casaccia
 *  \date 08 July 2012
 */

#pragma once

class AudioWrapper {

public:
	virtual ~AudioWrapper() {};

	virtual bool initialize() = 0;
	virtual bool load(char* const filename) = 0;
	virtual void unload() = 0;
	virtual void play() = 0;
	virtual void pause() = 0;
	virtual void playPause() = 0;
	virtual void stop() = 0;
	virtual void exit() = 0;

	virtual bool isLooping() = 0;
	virtual void setLooping(bool val) = 0;
	virtual void toggleLooping() = 0;

	virtual float getVolume() const = 0;
	virtual void setVolume(float val) = 0;

	virtual float getPan() const = 0;
	virtual void setPan(float val) = 0;

	virtual float getPitch() const = 0;
	virtual void setPitch(float val) = 0;

};